package com.example.utils;

import com.example.entity.vo.PmsCategoryVo;

import java.util.List;
import java.util.stream.Collectors;

/**
 * @author ：fbb
 * @version ：1.0
 * @since 2021-12-26 15:50
 */
public class TreeUtils02 {

    public static List<PmsCategoryVo> listWithTree(List<PmsCategoryVo> categories) {

        // 1. 先查出所有分类数据
//        List<PmsCategoryVo> categories = pmsCategoryMapper.selectMap();
        // 2. 找出所有一级分类
        // 在映射到每个一级分类 添加它的子分类类
        return categories.stream()
                .filter(o -> o.getParentCid() == 1454)
                // 给每个一级分类加子分类
                .peek(o -> o.setChildrens(getChildCategoryList(o, categories)))
                // 排序
//                .sorted(Comparator.comparingInt(PmsCategoryVo::getSort))
                // 收集
                .collect(Collectors.toList());
    }

    // 根据当前分类 找出子类， 并通过递归找出子类的子类
    private static List<PmsCategoryVo> getChildCategoryList(PmsCategoryVo currMenu, List<PmsCategoryVo> categories) {
        return categories.stream().filter(o -> o.getParentCid().equals(currMenu.getCatId()))
                .peek(o -> o.setChildrens(getChildCategoryList(o, categories)))
//                .sorted(Comparator.comparingInt(PmsCategoryVo::getSort))
                .collect(Collectors.toList());
    }

}
